using SG3L_RAG.Domain.Entities;

namespace SG3L_RAG.Application.Interfaces
{
    public interface IDocumentChunkService
    {
        Task<DocumentChunk?> GetByIdAsync(Guid id);
        Task<IEnumerable<DocumentChunk>> GetAllAsync();
        Task<DocumentChunk> CreateAsync(Guid documentId, int chunkIndex, string content, float[] vector);
        Task UpdateAsync(DocumentChunk documentChunk);
        Task DeleteAsync(Guid id);
        Task<IEnumerable<DocumentChunk>> GetByDocumentIdAsync(Guid documentId);
        Task<IEnumerable<DocumentChunk>> SearchByVectorAsync(float[] queryVector, int topK = 10);
        Task<IEnumerable<DocumentChunk>> GetChunksByRangeAsync(Guid documentId, int startIndex, int endIndex);
        Task BatchCreateAsync(List<DocumentChunk> chunks);
        Task DeleteByDocumentIdAsync(Guid documentId);
    }
}
